View Javadoc

1   package uba.db.sql.server;
2   
3   import org.apache.commons.logging.Log;
4   import org.apache.commons.logging.LogFactory;
5   
6   /***
7    * Inicializa el servidor.<br>
8    * Esta es la clase principal del servidor (que puede ser ejecutada desde la
9    * linea de comandos). Para más información sobre los argumentos de linea de
10   * comandos que acepta el servidor ver
11   * {@link uba.db.sql.server.ServerCommandLineArguments}.
12   * 
13   * @version $Revision: 1.1 $
14   */
15  public class ServerLauncher {
16      private static final Log log = LogFactory.getLog(ServerLauncher.class);
17  
18      /***
19       * Arranque del servidor.
20       * 
21       * @param args
22       */
23      public static void main(String[] args) {
24          ServerCommandLineArguments cmdArguments = processArguments(args);
25  
26          Server server = new Server(cmdArguments.serverAddress(), cmdArguments.databaseDirectory());
27  
28          startServer(server);
29          waitForServerFinalization(server);
30      }
31  
32      private static void waitForServerFinalization(Server server) {
33          synchronized (server) {
34              // espera a que termine la ejecucion del server, es necesario hacer el
35              // synchronized para obtener el monitor del thread
36              try {
37                  server.wait();
38              } catch (InterruptedException e) {
39                  log.error("Se interrumpio la ejecucion del server", e);
40              }
41          }
42      }
43  
44      private static void startServer(Server server) {
45          try {
46              server.start();
47          } catch (Exception e) {
48              log.error("No se pudo inicializar el servidor", e);
49              System.exit(-1);
50          }
51      }
52  
53      private static ServerCommandLineArguments processArguments(String[] args) {
54          ServerCommandLineArguments commandLineArguments = null;
55          try {
56              commandLineArguments = new ServerCommandLineArguments(args);
57          } catch (InvalidServerCommandLineArguments e) {
58              log.error("No se pudo inicializar el servidor", e);
59              System.exit(-1);
60          }
61  
62          return commandLineArguments;
63      }
64  }